#ifndef __RN8302B_H
#define __RN8302B_H

#include "UI_Gauge_SPI.h"
#ifdef UsingFreeRTOS
#include "FreeRTOS.h"
#include "task.h"
#endif

//------------ RN8302B寄存器地址定义-------------//
#define UAWAV       (u16)0x0000               //A相电压采样数据
#define UAWAV_Len    3    
#define UBWAV       (u16)0x0001               //B相电压采样数据
#define UBWAV_Len    3    
#define UCWAV       (u16)0x0002               //C相电压采样数据
#define UCWAV_Len    3
#define IAWAV       (u16)0x0003               //A相电流采样数据
#define IAWAV_Len    3
#define IBWAV       (u16)0x0004               //B相电流采样数据
#define IBWAV_Len    3
#define ICWAV       (u16)0x0005               //C相电流采样数据
#define ICWAV_Len    3 
#define INWAV       (u16)0x0006               //零线电流采样数据
#define INWAV_Len    3
#define	UA			    (u16)0x0007               //A相电压有效值
#define	UA_Len       4
#define	UB			    (u16)0x0008               //B相电压有效值
#define	UB_Len       4 
#define	UC			    (u16)0x0009               //C相电压有效值
#define	UC_Len	     4 
#define USUM        (u16)0x000A               //电压矢量和有效值
#define USUM_Len     4 
#define	IA			    (u16)0x000B               //A相电流有效值
#define	IA_Len	     4 
#define	IB			    (u16)0x000C               //B相电流有效值
#define	IB_Len		   4
#define	IC			    (u16)0x000D               //C相电流有效值
#define	IC_Len	     4
#define	IN			    (u16)0x000E               //N零线电流有效值
#define	IN_Len	     4
#define ISUM        (u16)0x0010               //全波电流矢量和有效值
#define ISUM_Len     4
#define	PWRA		    (u16)0x0014               //A相有功功率
#define PWRA_Len     4
#define	PWRB		   	(u16)0x0015               //B相有功功率
#define	PWRB_Len     4
#define	PWRC		   	(u16)0x0016               //C相有功功率
#define	PWRC_Len     4
#define	PWRT		   	(u16)0x0017               //合相有功功率
#define	PWRT_Len     4
#define	QA			    (u16)0x0018               //A相无功功率
#define	QA_Len       4
#define	QB			    (u16)0x0019               //B相无功功率
#define	QB_Len       4
#define	QC			    (u16)0x001A               //C相无功功率
#define	QC_Len       4
#define	QT			    (u16)0x001B               //合相无功功率
#define	QT_Len       4
#define	SA			    (u16)0x001C               //A相视在功率 
#define	SA_Len       4
#define	SB			    (u16)0x001D               //B相视在功率 
#define	SB_Len       4
#define	SC			    (u16)0x001E               //C相视在功率 
#define	SC_Len       4
#define	STA			    (u16)0x001F               //合相视在功率
#define	STA_Len      4
#define	PFA			    (u16)0x0020               //A相功率因子 
#define	PFA_Len      3
#define	PFB			    (u16)0x0021               //B相功率因子
#define	PFB_Len      3
#define	PFC			    (u16)0x0022               //C相功率因子 
#define	PFC_Len      3
#define	PFT			    (u16)0x0023               //合相功率因子
#define	PFT_Len      3

#define	PAFCnt			  (u16)0x0024          //A相有功能量寄存器
#define	PAFCnt_Len      3
#define	PBFCnt			  (u16)0x0025          //B相有功能量寄存器
#define	PBFCnt_Len      3
#define	PCFCnt			  (u16)0x0026          //C相有功能量寄存器
#define	PCFCnt_Len      3
#define	PTFCnt			  (u16)0x0027          //合相有功能量寄存器
#define	PTFCnt_Len      3

#define	EPA			    (u16)0x0030               //A相有功能量寄存器
#define	EPA_Len      3
#define	EPB			    (u16)0x0031               //B相有功能量寄存器
#define	EPB_Len      3
#define	EPC			    (u16)0x0032               //C相有功能量寄存器
#define	EPC_Len      3
#define	EPT			    (u16)0x0033               //合相有功能量寄存器
#define	EPT_Len      3
#define	PosEPA		  (u16)0x0034               //A相正向有功能量寄存器
#define	PosEPA_Len   3
#define	PosEPB	  	(u16)0x0035               //B相正向有功能量寄存器
#define	PosEPB_Len   3
#define	PosEPC		  (u16)0x0036               //C相正向有功能量寄存器
#define	PosEPC_Len   3
#define	PosEPT		  (u16)0x0037               //合相正向有功能量寄存器 
#define	PosEPT_Len   3
#define	NegEPA	   	(u16)0x0038               //A相反向有功能量寄存器 
#define	NegEPA_Len   3
#define	NegEPB		  (u16)0x0039               //B相反向有功能量寄存器
#define	NegEPB_Len   3
#define	NegEPC		  (u16)0x003A               //C相反向有功能量寄存器 
#define	NegEPC_Len   3
#define	NegEPT		  (u16)0x003B               //合相反向有功能量寄存器
#define	NegEPT_Len   3
#define	EQA			    (u16)0x003C               //A相无功能量寄存器
#define	EQA_Len      3
#define	EQB			    (u16)0x003D               //B相无功能量寄存器
#define	EQB_Len	     3
#define	EQC			    (u16)0x003E               //C相无功能量寄存器   
#define	EQC_Len	     3
#define	EQT			    (u16)0x003F               //合相无功能量寄存器
#define	EQT_Len	     3
#define	PosEQA		  (u16)0x0040               //A相正向无功能量寄存器 
#define	PosEQA_Len   3
#define	PosEQB		  (u16)0x0041               //B相正向无功能量寄存器 
#define	PosEQB_Len   3
#define	PosEQC		  (u16)0x0042               //C相正向无功能量寄存器 
#define	PosEQC_Len   3
#define	PosEQT		  (u16)0x0043               //合相正向无功能量寄存器 
#define	PosEQT_Len   3
#define	NegEQA		  (u16)0x0044               //A相反向无功能量寄存器  
#define	NegEQA_Len   3
#define	NegEQB		  (u16)0x0045               //B相反向无功能量寄存器  
#define	NegEQB_Len   3
#define	NegEQC		  (u16)0x0046               //C相反向无功能量寄存器  
#define	NegEQC_Len   3
#define	NegEQT		  (u16)0x0047               //合相反向无功能量寄存器    
#define	NegEQT_Len   3
#define	ESA			    (u16)0x0048               //A相视在能量寄存器 
#define	ESA_Len      3
#define	ESB		    	(u16)0x0049               //B相视在能量寄存器 
#define	ESB_Len      3
#define	ESC			    (u16)0x004A               //C相视在能量寄存器 
#define	ESC_Len      3 
#define	EST			    (u16)0x004B               //合相视在能量寄存器 
#define	EST_Len      3
// 基波谐波计量参数寄存器
#define YUA			    (u16)0x0050                //采样通道UA基波相角寄存器
#define YUA_Len      3
#define YUB			    (u16)0x0051                //采样通道UB基波相角寄存器
#define YUB_Len      3
#define YUC			    (u16)0x0052                //采样通道UC基波相角寄存器
#define YUC_Len      3
#define YIA			    (u16)0x0053                //采样通道IA基波相角寄存器
#define YIA_Len      3
#define YIB			    (u16)0x0054                //采样通道IB基波相角寄存器
#define YIB_Len      3
#define YIC			    (u16)0x0055                //采样通道IC基波相角寄存器
#define YIC_Len      3
#define YIN			    (u16)0x0056                //采样通道IN基波相角寄存器
#define YIN_Len      3
#define UFREQ       (u16)0x0057                 //电压线频率
#define UFREQ_Len    3
#define FUA         (u16)0x0058                   //A 相基波电压有效值
#define FUA_Len      4
#define FUB         (u16)0x0059                   //B 相基波电压有效值
#define FUB_Len      4
#define FUC         (u16)0x005A                   //C 相基波电压有效值
#define FUC_Len      4
#define FIA         (u16)0x005B                   //A 相基波电流有效值
#define FIA_Len      4
#define FIB         (u16)0x005C                   //B 相基波电流有效值
#define FIB_Len      4
#define FIC         (u16)0x005D                   //C 相基波电流有效值
#define FIC_Len      4
#define FPA         (u16)0x005E                   //A 相基波有功功率
#define FPA_Len      4
#define FPB         (u16)0x005F                   //B 相基波有功功率
#define FPB_Len      4
#define FPC         (u16)0x0060                   //C 相基波有功功率
#define FPC_Len      4
#define FPT         (u16)0x0061                   //合相基波有功功率
#define FPT_Len      4
#define FQA         (u16)0x0062                   //A 相基波无功功率
#define FQA_Len      4
#define FQB         (u16)0x0063                   //B 相基波无功功率
#define FQB_Len      4
#define FQC         (u16)0x0064                   //C 相基波无功功率
#define FQC_Len      4
#define FQT         (u16)0x0065                   //合相基波无功功率
#define FQT_Len      4
#define FSA         (u16)0x0066                   //A 相基波视在功率
#define FSA_Len      4
#define FSB         (u16)0x0067                   //B 相基波视在功率
#define FSB_Len      4
#define FSC         (u16)0x0068                   //C 相基波视在功率
#define FSC_Len      4
#define FSTA        (u16)0x0069                   //RMS 合相基波视在功率
#define FSTA_Len     4 
#define FPfA        (u16)0x006A                   //A 相基波功率因数
#define FPfA_Len     3
#define FPfB        (u16)0x006B                   //B 相基波功率因数
#define FPfB_Len     3  
#define FPfC        (u16)0x006C                   //C 相基波功率因数
#define FPfC_Len     3 
#define FPfTA       (u16)0x006D                   //RMS 合相基波功率因数
#define FPfTA_Len    3 
#define FPAFCnt     (u16)0x006E                   //A 相基波有功快速脉冲计数
#define FPAFCnt_Len  3
#define FPBFCnt     (u16)0x006F                   //B 相基波有功快速脉冲计数
#define FPBFCnt_Len  3
#define FPCFCnt     (u16)0x0070                   //C 相基波有功快速脉冲计数
#define FPCFCnt_Len  3
#define FPTFCnt     (u16)0x0071                   //合相基波有功快速脉冲计数
#define FPTFCnt_Len  3
#define FQAFCnt     (u16)0x0072                   //A 相基波无功快速脉冲计数
#define FQAFCnt_Len  3
#define FQBFCnt     (u16)0x0073                   //B 相基波无功快速脉冲计数
#define FQBFCnt_Len  3
#define FQCFCnt     (u16)0x0074                   //C 相基波无功快速脉冲计数
#define FQCFCnt_Len  3
#define FQTFCnt     (u16)0x0075                   //合相基波无功快速脉冲计数
#define FQTFCnt_Len  3
#define FSAFCnt     (u16)0x0076                   //A 相基波视在快速脉冲计数
#define FSAFCnt_Len  3
#define FSBFCnt     (u16)0x0077                   //B 相基波视在快速脉冲计数
#define FSBFCnt_Len  3
#define FSCFCnt     (u16)0x0078                   //C 相基波视在快速脉冲计数
#define FSCFCnt_Len  3
#define FSTAFCnt    (u16)0x0079                   //RMS 合相基波视在快速脉冲计数
#define FSTAFCnt_Len 3   
#define FEPA        (u16)0x007A                   //A 相基波有功电能
#define FEPA_Len     3
#define FEPB        (u16)0x007B                   //B 相基波有功电能
#define FEPB_Len     3
#define FEPC        (u16)0x007C                   //C 相基波有功电能
#define FEPC_Len     3
#define FEPT        (u16)0x007D                   //合相基波有功电能
#define FEPT_Len     3
#define PosFEPA     (u16)0x007E                   //A 相基波正向有功能量寄存器
#define PosFEPA_Len  3
#define PosFEPB     (u16)0x007F                   //B 相基波正向有功能量寄存器
#define PosFEPB_Len  3
#define PosFEPC     (u16)0x0080                   //C 相基波正向有功能量寄存器
#define PosFEPC_Len  3 
#define PosFEPT     (u16)0x0081                   //合相基波正向有功能量寄存器
#define PosFEPT_Len  3
#define NegFEPA     (u16)0x0082                   //A 相基波反向有功能量寄存器
#define NegFEPA_Len  3
#define NegFEPB     (u16)0x0083                   //B 相基波反向有功能量寄存器
#define NegFEPB_Len  3
#define NegFEPC     (u16)0x0084                   //C 相基波反向有功能量寄存器
#define NegFEPC_Len  3
#define NegFEPT     (u16)0x0085                   //合相基波反向有功能量寄存器
#define NegFEPT_Len  3
#define FEQA        (u16)0x0086                   //A 相基波无功电能
#define FEQA_Len     3
#define FEQB        (u16)0x0087                   //B 相基波无功电能
#define FEQB_Len     3
#define FEQC        (u16)0x0088                   //C 相基波无功电能
#define FEQC_Len     3
#define FEQT        (u16)0x0089                   //合相基波无功电能
#define FEQT_Len     3
#define PosFEQA     (u16)0x008A                   //A 相正向基波无功能量寄存器
#define PosFEQA_Len  3 
#define PosFEQB     (u16)0x008B                   //B 相正向基波无功能量寄存器
#define PosFEQB_Len  3
#define PosFEQC     (u16)0x008C                   //C 相正向基波无功能量寄存器
#define PosFEQC_Len  3
#define PosFEQT     (u16)0x008D                   //合相正向基波无功能量寄存器
#define PosFEQT_Len  3
#define NegFEQA     (u16)0x008E                   //A 相反向基波无功能量寄存器
#define NegFEQA_Len  3
#define NegFEQB     (u16)0x008F                   //B 相反向基波无功能量寄存器
#define NegFEQB_Len  3
#define NegFEQC     (u16)0x0090                   //C 相反向基波无功能量寄存器
#define NegFEQC_Len  3
#define NegFEQT     (u16)0x0091                   //合相反向基波无功能量寄存器
#define NegFEQT_Len  3
#define FESA        (u16)0x0092                   //A 相基波视在能量寄存器
#define FESA_Len     3
#define FESB        (u16)0x0093                   //B 相基波视在能量寄存器
#define FESB_Len     3
#define FESC        (u16)0x0094                   //C 相基波视在能量寄存器
#define FESC_Len     3
#define FESTA       (u16)0x0095                   //RMS 合相基波视在能量寄存器
#define FESTA_Len    3
#define HUA         (u16)0x0096                   //A 相谐波电压有效值
#define HUA_Len      4
#define HUB         (u16)0x0097                   //B 相谐波电压有效值
#define HUB_Len      4 
#define HUC         (u16)0x0098                   //C 相谐波电压有效值
#define HUC_Len      4
#define HIA         (u16)0x0099                   //A 相谐波电流有效值
#define HIA_Len      4
#define HIB         (u16)0x009A                   //B 相谐波电流有效值
#define HIB_Len      4
#define HIC         (u16)0x009B                   //C 相谐波电流有效值
#define HIC_Len      4
#define FSTV        (u16)0x009C                   //PQS 合相基波视在功率
#define FSTV_Len     4
#define FPfTV       (u16)0x009D                   //PQS 合相基波功率因数
#define FPfTV_Len    3
#define FSTVFCnt    (u16)0x009E                   //PQS 合相基波视在快速脉冲计数
#define FSTVFCnt_Len 3
#define FESTV       (u16)0x009F                   //PQS 合相基波视在能量寄存器
#define FESTV_Len    3

//------------  RN8302B 配置和状态寄存器地址定义，校表寄存器  -------------//
#define HFConst1         (u16)0x0100                   //高频脉冲计数寄存器 1
#define HFConst1_Len      2
#define HFConst2         (u16)0x0101                   //高频脉冲计数寄存器 2
#define HFConst2_Len      2
#define IStart_PS        (u16)0x0102                   //有功视在启动电流阈值寄存器
#define IStart_PS_Len     2
#define IStart_Q         (u16)0x0103                   //无功启动电流阈值寄存器
#define IStart_Q_Len      2 
#define LostVoltT        (u16)0x0104                   //失压阈值寄存器
#define LostVoltT_Len     2 
#define ZXOT             (u16)0x0105                   //过零阈值寄存器
#define ZXOT_Len          2
#define PRTH1L           (u16)0x0106                   //相位分段校正电流阈值 1 下限
#define PRTH1L_Len        2
#define PRTH1H           (u16)0x0107                   //相位分段校正电流阈值 1 上限
#define PRTH1H_Len        2
#define PRTH2L           (u16)0x0108                   //相位分段校正电流阈值 2 下限
#define PRTH2L_Len        2
#define PRTH2H           (u16)0x0109                   //相位分段校正电流阈值 2 上限
#define PRTH2H_Len        2 
#define IRegion3L        (u16)0x010A                   //电流阈值 3 下限
#define IRegion3L_Len     2    
#define IRegion3H        (u16)0x010B                   //电流阈值 3 上限
#define IRegion3H_Len     2
#define PHSUA            (u16)0x010C                   //采样通道 UA 相位校正寄存器
#define PHSUA_Len         1     
#define PHSUB            (u16)0x010D                   //采样通道 UB 相位校正寄存器
#define PHSUB_Len         1 
#define PHSUC            (u16)0x010E                   //采样通道 UC 相位校正寄存器
#define PHSUC_Len         1 
#define PHSIA            (u16)0x010F                   //采样通道 IA 分段相位校正寄存器
#define PHSIA_Len         3 
#define PHSIB            (u16)0x0110                   //采样通道 IB 分段相位校正寄存器
#define PHSIB_Len         3
#define PHSIC            (u16)0x0111                   //采样通道 IC 分段相位校正寄存器
#define PHSIC_Len         3   
#define PHSIN            (u16)0x0112                   //采样通道 IN 相位校正
#define PHSIN_Len         1 
#define GSUA             (u16)0x0113                   //采样通道 UA 通道增益
#define GSUA_Len          2    
#define GSUB             (u16)0x0114                   //采样通道 UB 通道增益
#define GSUB_Len          2 
#define GSUC             (u16)0x0115                   //采样通道 UC 通道增益
#define GSUC_Len          2  
#define GSIA             (u16)0x0116                   //采样通道 IA 通道增益
#define GSIA_Len          2  
#define GSIB             (u16)0x0117                   //采样通道 IB 通道增益
#define GSIB_Len          2  
#define GSIC             (u16)0x0118                   //采样通道 IC 通道增益
#define GSIC_Len          2  
#define GSIN             (u16)0x0119                   //采样通道 IN 通道增益
#define GSIN_Len          2   
#define DCOS_UA          (u16)0x011A                   //采样通道 UA 直流 Offset 校正
#define DCOS_UA_Len       2   
#define DCOS_UB          (u16)0x011B                   //采样通道 UB 直流 Offset 校正
#define DCOS_UB_Len       2  
#define DCOS_UC          (u16)0x011C                   //采样通道 UC 直流 Offset 校正
#define DCOS_UC_Len       2   
#define DCOS_IA          (u16)0x011D                   //采样通道 IA 直流 Offset 校正
#define DCOS_IA_Len       2   
#define DCOS_IB          (u16)0x011E                   //采样通道 IB 直流 Offset 校正
#define DCOS_IB_Len       2    
#define DCOS_IC          (u16)0x011F                   //采样通道 IC 直流 Offset 校正
#define DCOS_IC_Len       2    
#define DCOS_IN          (u16)0x0120                   //采样通道 IN 直流 Offset 校正
#define DCOS_IN_Len       2   
#define UA_OS            (u16)0x0121                   //A 相电压有效值 Offset
#define UA_OS_Len         2   
#define UB_OS            (u16)0x0122                   //B 相电压有效值 Offset
#define UB_OS_Len         2      
#define UC_OS            (u16)0x0123                   //C 相电压有效值 Offset
#define UC_OS_Len         2  
#define IA_OS            (u16)0x0124                   //A 相电流有效值 Offset
#define IA_OS_Len         2  
#define IB_OS            (u16)0x0125                   //B 相电流有效值 Offset
#define IB_OS_Len         2   
#define IC_OS            (u16)0x0126                   //C 相电流有效值 Offset
#define IC_OS_Len         2    
#define IN_OS            (u16)0x0127                   //零线电流 1 有效值 Offset
#define IN_OS_Len         2
#define GPA              (u16)0x0128                   //A 相有功功率增益
#define GPA_Len           2
#define GPB              (u16)0x0129                   //B 相有功功率增益
#define GPB_Len           2 
#define GPC              (u16)0x012A                   //C 相有功功率增益
#define GPC_Len           2  
#define GQA              (u16)0x012B                   //A 相无功功率增益
#define GQA_Len           2  
#define GQB              (u16)0x012C                   //B 相无功功率增益
#define GQB_Len           2    
#define GQC              (u16)0x012D                   //C 相无功功率增益
#define GQC_Len           2  
#define GSA              (u16)0x012E                   //A 相视在功率增益
#define GSA_Len           2    
#define GSB              (u16)0x012F                   //B 相视在功率增益
#define GSB_Len           2  
#define GSC              (u16)0x0130                   //C 相视在功率增益
#define GSC_Len           2 
#define PA_PHSL          (u16)0x0131                   //A 相有功分段相位校正寄存器-低段
#define PA_PHSL_Len       2  
#define PB_PHSL          (u16)0x0132                   //B 相有功分段相位校正寄存器-低段
#define PB_PHSL_Len       2    
#define PC_PHSL          (u16)0x0133                   //C 相有功分段相位校正寄存器-低段
#define PC_PHSL_Len       2   
#define QA_PHSL          (u16)0x0134                   //A 相无功分段相位校正寄存器-低段
#define QA_PHSL_Len       2    
#define QB_PHSL          (u16)0x0135                   //B 相无功分段相位校正寄存器-低段
#define QB_PHSL_Len       2   
#define QC_PHSL          (u16)0x0136                   //C 相无功分段相位校正寄存器-低段
#define QC_PHSL_Len       2  
#define PA_OS            (u16)0x0137                   //A 相有功功率 Offset
#define PA_OS_Len         2     
#define PB_OS            (u16)0x0138                   //B 相有功功率 Offset
#define PB_OS_Len         2    
#define PC_OS            (u16)0x0139                   //C 相有功功率 Offset
#define PC_OS_Len         2   
#define QA_OS            (u16)0x013A                   //A 相无功功率 Offset
#define QA_OS_Len         2    
#define QB_OS            (u16)0x013B                   //B 相无功功率 Offset
#define QB_OS_Len         2  
#define QC_OS            (u16)0x013C                   //C 相无功功率 Offset
#define QC_OS_Len         2  
#define FUA_OS           (u16)0x013D                   //A 相基波电压有效值 Offset
#define FUA_OS_Len        2  
#define FUB_OS           (u16)0x013E                   //B 相基波电压有效值 Offset
#define FUB_OS_Len        2   
#define FUC_OS           (u16)0x013F                   //C 相基波电压有效值 Offset
#define FUC_OS_Len        2      
#define FIA_OS           (u16)0x0140                   //A 相基波电流有效值 Offset
#define FIA_OS_Len        2  
#define FIB_OS           (u16)0x0141                   //B 相基波电流有效值 Offset
#define FIB_OS_Len        2   
#define FIC_OS           (u16)0x0142                   //C 相基波电流有效值 Offset
#define FIC_OS_Len        2   
#define GFPA             (u16)0x0143                   //A 相基波有功功率增益
#define GFPA_Len          2 
#define GFPB             (u16)0x0144                   //B 相基波有功功率增益
#define GFPB_Len          2 
#define GFPC             (u16)0x0145                   //C 相基波有功功率增益
#define GFPC_Len          2 
#define GFQA             (u16)0x0146                   //A 相基波无功功率增益
#define GFQA_Len          2    
#define GFQB             (u16)0x0147                   //B 相基波无功功率增益
#define GFQB_Len          2          
#define GFQC             (u16)0x0148                   //C 相基波无功功率增益
#define GFQC_Len          2    
#define GFSA             (u16)0x0149                   //A 相基波视在功率增益
#define GFSA_Len          2   
#define GFSB             (u16)0x014A                   //B 相基波视在功率增益
#define GFSB_Len          2  
#define GFSC             (u16)0x014B                   //C 相基波视在功率增益
#define GFSC_Len          2    
#define FPA_PHS          (u16)0x014C                   //A 相基波有功相位校正寄存器
#define FPA_PHS_Len       2    
#define FPB_PHS          (u16)0x014D                   //B 相基波有功相位校正寄存器
#define FPB_PHS_Len       2     
#define FPC_PHS          (u16)0x014E                   //C 相基波有功相位校正寄存器
#define FPC_PHS_Len       2    
#define FQA_PHS          (u16)0x014F                   //A 相基波无功相位校正寄存器
#define FQA_PHS_Len       2 
#define FQB_PHS          (u16)0x0150                   //B 相基波无功相位校正寄存器
#define FQB_PHS_Len       2    
#define FQC_PHS          (u16)0x0151                   //C 相基波无功相位校正寄存器
#define FQC_PHS_Len       2        
#define FPA_OS           (u16)0x0152                   //A 相基波有功功率 Offset
#define FPA_OS_Len        2    
#define FPB_OS           (u16)0x0153                   //B 相基波有功功率 Offset
#define FPB_OS_Len        2 
#define FPC_OS           (u16)0x0154                   //C 相基波有功功率 Offset
#define FPC_OS_Len        2 
#define FQA_OS           (u16)0x0155                   //A 相基波无功功率 Offset
#define FQA_OS_Len        2  
#define FQB_OS           (u16)0x0156                   //B 相基波无功功率 Offset
#define FQB_OS_Len        2 
#define FQC_OS           (u16)0x0157                   //C 相基波无功功率 Offset
#define FQC_OS_Len        2   
#define SAGCFG           (u16)0x0158                   //电压暂降阈值配置
#define SAGCFG_Len        3 
#define OVLVL            (u16)0x0159                   //过压阈值配置
#define OVLVL_Len         2 
#define OILVL            (u16)0x015A                   //过流阈值配置
#define OILVL_Len         2  
#define CFCFG            (u16)0x0160                   //CF 引脚配置寄存器
#define CFCFG_Len         3  
#define EMUCFG           (u16)0x0161                   //EMU 配置寄存器
#define EMUCFG_Len        3   
#define EMUCON           (u16)0x0162                   //EMU 控制寄存器
#define EMUCON_Len        3    
#define WSAVECON         (u16)0x0163                   //采样数据写缓存控制寄存器
#define WSAVECON_Len      1    
#define EMMIE            (u16)0x0164                   //EMM 中断允许寄存器，写保护
#define EMMIE_Len         2    
#define EMMIF            (u16)0x0165                   //EMM 中断标志和状态寄存器
#define EMMIF_Len         2     
#define PQSign           (u16)0x0166                   //有功无功功率方向寄存器
#define PQSign_Len        2    
#define Noload           (u16)0x0167                   //潜动启动状态寄存器
#define Noload_Len        2  
#define IRegionS         (u16)0x0168                   //电流分区状态寄存器
#define IRegionS_Len      1     
#define PHASES           (u16)0x0169                   //相电压电流状态寄存器
#define PHASES_Len        2       
#define CheckSum1        (u16)0x016A                   //EMM 校表和配置寄存器校验和
#define CheckSum1_Len     3     
#define NVM1CFG          (u16)0x0170                   //NVM1 配置寄存器
#define NVM1CFG_Len       1      
#define NVM1IF           (u16)0x0171                   //NVM1 状态寄存器
#define NVM1IF_Len        2 
#define NVM2CFG          (u16)0x0172                   //NVM2 配置寄存器
#define NVM2CFG_Len       2 
#define NVM2CMPA         (u16)0x0173                   //NVM2 IA 比较器控制寄存器
#define NVM2CMPA_Len      2   
#define NVM2CMPB         (u16)0x0174                   //NVM2 IB 比较器控制寄存器
#define NVM2CMPB_Len      2      
#define NVM2CMPC         (u16)0x0175                   //NVM2 IC 比较器控制寄存器
#define NVM2CMPC_Len      2    
#define NVM2IF           (u16)0x0176                   //全失压状态寄存器
#define NVM2IF_Len        2  
#define WREN             (u16)0x0180                   //写使能寄存器
#define WREN_Len          1 
#define WMSW             (u16)0x0181                   //工作模式切换寄存器
#define WMSW_Len          1 
#define SOFTRST          (u16)0x0182                   //软件复位寄存器
#define SOFTRST_Len       1   
#define ADCCFG           (u16)0x0183                   //ADC 配置寄存器
#define ADCCFG_Len        2   
#define MODSEL           (u16)0x0186                   //三相四线/三相三线模式选择寄存器
#define MODSEL_Len        1       
#define SYSSR            (u16)0x018A                   //系统状态寄存器
#define SYSSR_Len         2     
#define CheckSum2        (u16)0x018B                   //NVM1、 NVM2、系统配置寄存器校验和
#define CheckSum2_Len     2       
#define RData            (u16)0x018C                   //上一次 SPI 读出的数据
#define RData_Len         4    
#define WData            (u16)0x018D                   //上一次 SPI 写入的数据
#define WData_Len         3  
#define LRBufAddr        (u16)0x018E                   //最后一次读波形缓存的地址
#define LRBufAddr_Len     2       
#define DeviceID         (u16)0x018F                   //RN8302B Device ID
#define DeviceID_Len      3      
#define ZXOTU            (u16)0x0190                   //电压夹角及测频阈值寄存器
#define ZXOTU_Len         2    
#define AUOTDC_EN        (u16)0x0191                   //直流 OFFSET 自动校正使能寄存器
#define AUOTDC_EN_Len     2  
#define ZXOTCFG          (u16)0x0192                   //过零计算配置及标志寄存器， 双字节，实际有效为 12 位。
#define ZXOTCFG_Len       2  
#define IN_WaveEN        (u16)0x0194                   //IN 波形缓存使能寄存器
#define IN_WaveEN_Len     2     
#define PA_PHSM          (u16)0x01B0                   //A 相有功分段相位校正寄存器-中段备注：高字节无效，读写按 3 字节操作。B1H~BBH 地址寄存器同B0H地
#define PA_PHSM_Len       3  
#define PA_PHSH          (u16)0x01B1                   //A 相有功分段相位校正寄存器-高段
#define PA_PHSH_Len       3      
#define PB_PHSM          (u16)0x01B2                   //B 相有功分段相位校正寄存器-中段
#define PB_PHSM_Len       3 
#define PB_PHSH          (u16)0x01B3                   //B 相有功分段相位校正寄存器-高段
#define PB_PHSH_Len       3     
#define PC_PHSM          (u16)0x01B4                   //C 相有功分段相位校正寄存器-中段
#define PC_PHSM_Len       3     
#define PC_PHSH          (u16)0x01B5                   //C 相有功分段相位校正寄存器-高段
#define PC_PHSH_Len       3    
#define QA_PHSM          (u16)0x01B6                   //A 相无功分段相位校正寄存器-中段
#define QA_PHSM_Len       3     
#define QA_PHSH          (u16)0x01B7                   //A 相无功分段相位校正寄存器-高段
#define QA_PHSH_Len       3    
#define QB_PHSM          (u16)0x01B8                   //B 相无功分段相位校正寄存器-中段
#define QB_PHSM_Len       3   
#define QB_PHSH          (u16)0x01B9                   //B 相无功分段相位校正寄存器-高段
#define QB_PHSH_Len       3     
#define QC_PHSM          (u16)0x01BA                   //C 相无功分段相位校正寄存器-中段
#define QC_PHSM_Len       3    
#define QC_PHSH          (u16)0x01BB                   //C 相无功分段相位校正寄存器-高段
#define QC_PHSH_Len       3 
#define DeviceVer        (u16)0x01F1                   // 芯片版本号
#define DeviceVer_Len     3 




//----------------- 命令字 ----------------//
// 写使能
#define	  Con_WrEn	            0xE5
// 写保护
#define	  Con_WrDis	            0xDC
// 选择电流通道A
#define	  Con_ChannelsA	        0x5A
// 选择电流通道B
#define	  Con_ChannelsB	        0xA5
// 复位指令:指令复位
#define	  Con_Reset		          0xFA	
// 芯片型号 = 8302B 或 8302BV3
#define   IC_Device_ID          0x830200 
// 8302B 芯片版本号  =  0x000000 = V2版本;  0x001018 = V3版本; 
#define   IC_Device_V2          0x000000  
#define   IC_Device_V3          0x001018  

//--------------- END:命令字 ----------------//

//------------ RN8209 常量定义--------------//
// 电表常数
#define   EC                    2000

// 电压电流有效值参数
#define    K_URMS                0.00000858572827358274      
#define    K_IRMS                0.00000121407610151746 
// 有功功率系数
#define    K_POWERPA             0.00004034817560229  // 0.0000000489535618905314 //
#define    K_POWERPB             0.000181470926820507 
#define    K_POWERPC             0.0000993109012104046 
#define    K_POWERPT             0.02038934646436850
// 视在功率系数
#define    K_POWERSTA            0.0000874409674273256 
// 电量寄存器校准系数
#define    K_QOE                 0.135680091202135     //0.127329963

#define    K_EC                  0.129083004289955             // K_EC = 1 / EC; EC = 电表常数
#define    err_power             50

// 增益寄存器校准值
#define    CalV_HFConst          0x0AC2
#define    CalV_GSUA             0x0909  
#define    CalV_GSUB             0x0B79 
#define    CalV_GSUC             0x08E0 
#define    CalV_GSIA             0x04D1 
#define    CalV_GSIB             0x0148 
#define    CalV_GSIC             0x0109
#define    CalV_GPA              0x802D
#define    CalV_GPB              0xA3A0
#define    CalV_GPC              0x8B3E
#define    CalV_HFConst_H          0x0A
#define    CalV_GSUA_H             0x09
#define    CalV_GSUB_H             0x0B 
#define    CalV_GSUC_H             0x08 
#define    CalV_GSIA_H             0x04 
#define    CalV_GSIB_H             0x01 
#define    CalV_GSIC_H             0x01
#define    CalV_GPA_H              0x80
#define    CalV_GPB_H              0xA3
#define    CalV_GPC_H              0x8B
#define    CalV_HFConst_L          0xC2
#define    CalV_GSUA_L             0x09  
#define    CalV_GSUB_L             0x79 
#define    CalV_GSUC_L             0xE0 
#define    CalV_GSIA_L             0xD1 
#define    CalV_GSIB_L             0x48 
#define    CalV_GSIC_L             0x09
#define    CalV_GPA_L              0x2D
#define    CalV_GPB_L              0xA0
#define    CalV_GPC_L              0x3E

//------------ End RN8209 常量定义-------------//




//------------ RN8209 全局变量  ---------------//
extern uint8_t	  rnCheckTimes;
extern uint16_t	  rnCheckSUM;
extern uint16_t	  rnCheckSUMRead;
extern uint32_t   rnDeviceID;
extern uint32_t   rnDeviceVerID;
extern uint8_t    rnIF;



//------------ RN8209 函数  -------------//
void RN_WriteDatas(u16 Addr,uint8_t *datas,uint8_t datalen); 
u32  RN_ReadDatas(u16 Addr,uint8_t datalen); 
void RN_Set_Regulation(void);

#endif

